package com.learn.multi_thread.A_BaseThread.E_ProductionOfConsumers.B_BlockQueueImplementation;

import java.util.concurrent.ArrayBlockingQueue;

public class ConsumerOfCook extends Thread{
    /**
     * 编写流程
     * 1. 循环
     * 2. 同步代码块
     * 3. 判断共享数据是否到了末尾（到了末尾该如何）
     * 4. 判断共享数据是否到了末尾（没有到末尾，执行核心代码）
     *
     * 注意：此时没有加锁是因为 queue 是线程安全的
     */
    ArrayBlockingQueue<String> queue;

    public ConsumerOfCook(ArrayBlockingQueue<String> queue) {
        this.queue = queue;
    }

    @Override
    public void run() {
        while (true) {
            try {
                // 不断从队列中获取面条
                System.out.println(queue.take());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
